#ifndef _NE_PLATFORM_H_
#define _NE_PLATFORM_H_

#include <nedefine.h>

namespace ne
{
    // Linux
    #if defined(linux) || defined(__linux) || defined(__linux__)
        #define NE_PLATFORM NE_PLATFORM_LINUX

        #define NE_RENDER_SYSTEM NE_RENDER_SYSTEM_OPENGL

        #define NE_PRECISION NE_PRECISION_FLOAT

        #define NEAPI

    // Windows
    #elif defined(WIN32) || defined(_WIN32)
        #define NE_PLATFORM NE_PLATFORM_WINDOWS

        #define NE_RENDER_SYSTEM NE_RENDER_SYSTEM_OPENGL

        #define NE_PRECISION NE_PRECISION_FLOAT

        #if NE_USAGE == NE_USAGE_BUILD_DYNAMIC_LIB
            #define NEAPI __declspec(dllexport)
        #elif NE_USAGE == NE_USAGE_DYNAMIC_LIB
            #define NEAPI __declspec(dllimport)
        #else
            #define NEAPI
        #endif

    // MacOS
    #elif defined(__APPLE__) && !defined(__OS2__)
        #define NE_PLATFORM NE_PLATFORM_MACOSX

        #define NE_RENDER_SYSTEM NE_RENDER_SYSTEM_OPENGL

        #define NE_PRECISION NE_PRECISION_FLOAT

        #define NEAPI

    // IOS
    #elif defined(__OS2__)
        #define NE_PLATFORM NE_PLATFORM_OS2

        #define NE_RENDER_SYSTEM NE_RENDER_SYSTEM_OPENGLES

        #define NE_PRECISION NE_PRECISION_FLOAT

        #define NEAPI

    #endif
}

#endif
